package com.gitee.feizns.quickstart.mustache;

import com.samskivert.mustache.Mustache;
import com.samskivert.mustache.Template;
import lombok.Setter;

/**
 * mustache工具类
 * @author feizns
 * @since 2024/11/28
 */
public abstract class Mustaches {

    public static void main(String[] args) {
        String text = "Hello {{name}}";
        Object context = new Object() {
            public String getName() {
                return "World";
            }
        };
        String result = execute(text, context);
        System.out.println(result);
    }

    /**
     * 默认的编译器
     */
    public static final Mustache.Compiler defaultCompiler = Mustache.compiler().defaultValue("");

    /**
     * 编译器
     */
    @Setter
    private static Mustache.Compiler compiler;

    /**
     * 编译器
     * @return {@link Mustache.Compiler}
     */
    public static Mustache.Compiler compiler() {
        return compiler != null ? compiler : defaultCompiler;
    }

    /**
     * 编译
     * @param text 模板文本
     * @return {@link Template}
     */
    public static Template compile(String text) {
        return compiler().compile(text);
    }

    /**
     * 设置上下文数据并编译执行
     * @param text 模板文本
     * @param context 上下文
     * @return {@link String}
     */
    public static String execute(String text, Object context) {
        return compiler().compile(text).execute(context);
    }

}
